package cn.wizzer.app.crown.modules.services;

import cn.wizzer.app.crown.modules.models.CrownConfig;
import cn.wizzer.framework.base.service.BaseService;
import cn.wizzer.framework.page.Pagination;

import java.util.List;


public interface CrownConfigService extends BaseService<CrownConfig> {
    /**
     * 更新账号信息
     *
     * @param crownConfig
     */
    void editDo(CrownConfig crownConfig);

    /**
     * 分页查询
     *
     * @param searchKeyword 搜索关键字
     * @param searchDate    按时间搜索参数
     * @param pageNumber    页码
     * @param pageSize      条数
     * @return
     */
    Pagination data(String searchKeyword, String[] searchDate, Integer pageNumber, Integer pageSize);


    /**
     * 登录皇冠，并更新账号属性（操作时间、账号可用状态等）
     *
     * @param crownConfig SysCrownConfig对象
     * @return
     */
    void loginHg(CrownConfig crownConfig);

    /**
     * 所有启用账号登录初始化
     *
     * @param list
     */
    void loginInit(List<CrownConfig> list);

    /**
     * 获取一条，线程安全，抢占式不能重复获取
     *
     * @param type 业务类型
     * @return
     */
    CrownConfig syncOne(String type);


    /**
     * 账号检测（定时15分钟一次）
     */
    void accountCheck();

    /**
     * 释放账号
     *
     * @param crownConfig
     */
    void release(CrownConfig crownConfig);


    /**
     * 请求皇冠，获取爬虫数据
     *
     * @param tailUrl
     * @param config
     * @param reTry
     * @return
     */
    String getCrownData(String tailUrl, CrownConfig config, int reTry);



    /**
     * 检测账号是否被登出
     *
     * @param body
     * @param config
     * @return
     */
    boolean checkLogout(String body, CrownConfig config);


    /**
     * 检测皇冠维护、设置维护时间
     *
     * @param body            请求皇冠返回的body
     * @param config          皇冠账号
     * @return boolean
     */
    boolean checkMaintain(String body, CrownConfig config);


}
